// promise 方式的 ajax

const { rejects } = require("assert")

function ajax(url) {
  return new Promise((resolve, reject) => { 
    var xhr = new XMLHttpRequest()
    xhr.open('GET', url)
    xhr.responseType = 'json'
    xhr.onload = function () { 
      if (this.status === 200) {
        resolve(this.response)
      } else { 
        reject(new Error(this.statusText))
      }
    }
    xhr.send()
  })
 }


ajax('/api/data.json')
  .then(data => data.val)
  .then(data => data.val)
  .then(data => data.val)
  .then(data => data.val)
  .then(data => data.val)


Promise.resolve('foo') // 快速创建一个成功的promise
  .then(data => data) // 'foo'

Promise.resolve({
  then: (resolve, rejects) => {  // 返回一个对象 对象里有 then 方法 方法里有成功 失败回调函数 promise 会直接给到对应的函数
    resolve('foo')
  }
})
  .then(data => data) // 'foo'